﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
using namespace std;

// 静态转换 
// 1.基础类型转换
void test01() {
	char a = 'a';
	double d = static_cast<double>(a);
	double d1 = (double)a;
	cout << d << " " << d1 << endl;
}

// 2.有层次关系类的指针或引用转换 
class Father {

};
class Son : public Father {

};
void test02() {
	Father * f = NULL;
	Son * s = NULL;
	// 向上转换，安全 
	f = static_cast<Father*>(s);
}

// 3.引用转换 
void test03() {
	Father f;
	Son s;
	Father & ref_f = f;
	Son & ref_s = s;
	// 向上转换，安全 
	ref_f = static_cast<Father&>(s);
	// 向下转换，不安全 
	ref_s = static_cast<Son&>(f);
}

// 4.动态转换 
void test04() {
	// char a = 'a';
	// dynamic_cast<double>(a); // 基础类型不能使用动态转换 
	Father *f = NULL;
	Son *s = NULL; 
	// 向上转换，可以 
	Father *f1 = dynamic_cast<Father*>(s);
	// 向下转换，不可以 
	// Son *s1 = dynamic_cast<Son*>(f);
}



int main()
{



	system("pause");
	return EXIT_SUCCESS;
}